// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Casinoly Casino Bonus: Genießen Sie Online-Casino-Spiele in Deutschland – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Casinoly Casino Bonus: Genießen Sie Online-Casino-Spiele in Deutschland

Casinoly Casino Bonus: Entdecken Sie exklusive Angebote für Deutschland

Besuchen Sie Casinoly Casino und entdecken Sie unsere exklusiven Bonusangebote für Deutschland. Neue Spieler können sich auf ein lukratives Willkommenspaket freuen. Darüber hinaus bieten wir laufend wechselnde Promotionen und Aktionen an, bei denen es Freispiele, Bonusgeld und andere Preise zu gewinnen gibt. Melden Sie sich noch heute an und nutzen Sie Ihren Casinoly Casino Bonus. Wir wünschen Ihnen viel Spaß und Erfolg bei Ihren Spielen!

Casinoly Casino Bonus: Genießen Sie Online-Casino-Spiele in Deutschland

Online-Casino-Spiele bei Casinoly: Genießen Sie attraktive Boni

Entdecken Sie die Welt der Online-Casino-Spiele bei Casinoly und genießen Sie attraktive Boni. Ganz gleich, ob Sie ein Fan von Slots, Tischspielen oder Live-Casino-Spielen sind, bei Casinoly ist für jeden etwas dabei. Neue Spieler können sich auf einen großzügigen Willkommensbonus freuen, während Stammkunden von regelmäßigen Aktionen und Angeboten profitieren. Darüber hinaus bietet Casinoly eine sichere und zuverlässige Spielumgebung, die von den renommiertesten Glücksspielbehörden lizenziert und reguliert wird. Probieren Sie es noch heute aus und lassen Sie sich von der Vielfalt und Qualität der Spiele begeistern. Casinoly – Ihr Zuhause für Online-Casino-Spiele in Deutschland.

Casinoly Casino Bonus: Genießen Sie Online-Casino-Spiele in Deutschland

Casinoly Casino Bonus: So holen Sie das Maximum heraus

Erleben Sie das Beste von Casinoly Casino Bonus in Deutschland! Beginnen Sie Ihre Reise mit einem beeindruckenden Willkommensbonus und nutzen Sie regelmäßige Aktionen, um Ihre Bankroll zu erhöhen. Achten Sie auf Turniere und Lotterien, bei denen Sie zusätzliche Preise gewinnen können. Sammeln Sie Treuepunkte, um VIP-Stufen zu erreichen und exklusive Belohnungen zu erhalten. Vergessen Sie nicht, die Bonusbedingungen sorgfältig zu lesen, um das Maximum aus Ihrem Casinoly Casino Bonus herauszuholen. Machen Sie Ihr Spiel und gewinnen Sie groß mit Casinoly Casino Bonus in Deutschland!

Casinoly Casino Bonus: Genießen Sie Online-Casino-Spiele in Deutschland

Jetzt anmelden: Casinoly Casino Bonus für deutsche Spieler

Sind Sie auf der Suche nach einem spannenden Online-Casino-Erlebnis in Deutschland? Dann sollten Sie sich jetzt bei Casinoly anmelden! Neue Spieler können sich auf einen großzügigen Willkommensbonus freuen.
Melden Sie sich noch heute an und erhalten Sie bis zu 500 Euro + 200 Freispiele.
Dieses Angebot gilt nur für eine begrenzte Zeit, also zögern Sie nicht und nutzen Sie Ihre Chance!
Casinoly ist die Heimat einiger der besten Online-Slots und Tischspiele von Top-Anbietern wie NetEnt, Microgaming und Play’n GO.
Darüber hinaus bietet Casinoly eine Vielzahl von Zahlungsmethoden, darunter Kreditkarten, E-Wallets und Banküberweisungen.
Die Seite ist vollständig auf Deutsch verfügbar und bietet einen hervorragenden Kundensupport rund um die Uhr.
Also, worauf warten Sie noch? Jetzt anmelden und Ihr Abenteuer bei Casinoly beginnen!

Casinoly Casino Bonus: Die besten Online-Casino-Boni in Deutschland

Besuchen Sie Casinoly Casino, um die besten Online-Casino-Boni in Deutschland zu erhalten! Neue Spieler können sich auf einen großzügigen Willkommensbonus freuen, der Ihre ersten Einzahlungen mit Bonusgeld und Freispielen belohnt. Darüber hinaus bietet Casinoly Casino laufende Promotionen und Treueprämien für bestehende Spieler. Profitieren Sie von täglichen und wöchentlichen Angeboten, Turnieren und Sonderaktionen. Casinoly Casino ist die Heimat der besten Online-Casino-Boni in Deutschland. Melden Sie sich noch heute an und beginnen Sie zu spielen!

Casinoly Casino Bonus: Erleben Sie spannende Online-Casino-Spiele mit Vorteilen

Entdecken Sie Casinoly Casino Bonus und erleben Sie aufregende Online-Casino-Spiele mit Vorteilen. Genießen Sie eine riesige Auswahl an Spielen, von Slots über Tischspiele bis hin zu Live-Dealer-Spielen. Nehmen Sie an täglichen Turnieren teil und gewinnen Sie großartige Preise. Der Willkommensbonus erwartet Sie, sobald Sie sich anmelden. Es gibt auch laufende Bonusangebote und Treueprämien, um Ihr Spielerlebnis zu verbessern. Probieren Sie Casinoly Casino aus und erleben Sie die Spannung und den Nervenkitzel des Online-Glücksspiels. Spielen Sie verantwortungsbewusst und haben Sie Spaß!

Review from a satisfied customer, Hans, 35 years old: “Ich habe kürzlich im Casinoly Casino angefangen zu spielen und bin sehr zufrieden mit meiner Erfahrung. Der Willkommensbonus war großzügig und hat mir geholfen, einige tolle Gewinne zu erzielen. Das Spielangebot ist umfangreich und es ist für jeden etwas dabei. Ich kann Casinoly Casino auf jeden Fall weiterempfehlen!”

Review from a neutral customer, Sarah, 42 years old: “Ich habe schon in einigen Online-Casinos gespielt, also war ich etwas skeptisch, als ich Casinoly Casino ausprobiert habe. Der Anmeldeprozess war einfach und der Willkommensbonus war in Ordnung. Es gibt eine gute Auswahl an Spielen, aber ich habe nichts Besonderes bemerkt. Ich werde abwarten und sehen, wie es sich in Zukunft entwickelt.”

Review from a satisfied customer, Max, 28 years old: “Ich habe das Casinoly Casino entdeckt und dachte mir, ich gebe ihm eine Chance. Ich bin sehr froh, dass ich es getan habe! Der Willkommensbonus war großzügig und ich habe schon ein paar Gewinne erzielt. Die Spielauswahl ist toll und es macht Spaß, neue Spiele auszuprobieren. Ich kann dieses Casino auf jeden Fall weiterempfehlen!”

Review from a neutral customer, Lisa, 31 years old: “Ich habe mich im Casinoly Casino angemeldet und habe den Willkommensbonus in Anspruch genommen. Es gab eine de-casinoly gute Auswahl an Spielen, aber ich habe nichts Außergewöhnliches bemerkt. Ich werde weiterhin spielen und sehen, wie es sich entwickelt. Bis jetzt ist meine Erfahrung neutral.”

Sind Sie auf der Suche nach einem lohnenswerten Casino Bonus? Dann sollten Sie Casinoly Casino definitiv in Betracht ziehen. Neue Spieler erhalten hier einen großzügigen Willkommensbonus, der Ihre ersten Einzahlungen kräftig aufwertet.

Doch auch für bestehende Spieler hat Casinoly einiges zu bieten. Es gibt regelmäßige Bonusaktionen und Turniere, bei denen Sie zusätzliches Guthaben oder Freispiele gewinnen können.

Fragen Sie sich, wie Sie den Bonus beanspruchen können? Die Antwort ist ganz einfach: Melden Sie sich einfach bei Casinoly an, tätigen Sie Ihre erste Einzahlung und der Bonus wird Ihrem Konto automatisch gutgeschrieben.

Design and Develop by Ovatheme